---
title: lint-staged
description: Kör Ultracite automatiskt på dina stagade Git‑filer med lint‑staged
---

Ultracite integreras sömlöst med [lint-staged](https://github.com/okonet/lint-staged) för att automatiskt formatera och lint:a din kod innan varje commit. Detta säkerställer att endast ren, korrekt formaterad kod hamnar i ditt repo.

## Vad är lint-staged?

lint-staged är ett verktyg som kör linters och formatterare mot stagade Git‑filer. Det är särskilt användbart eftersom det:

- Behandlar endast filer som faktiskt ska committas
- Förhindrar att dåligt formaterad kod kommer in i ditt repo
- Körs snabbt eftersom det bara kontrollerar ändrade filer
- Integreras sömlöst med Git‑hookar

## Hur Ultracite använder lint-staged

När du kör `npx ultracite init`, om du väljer lint-staged‑alternativet, kommer Ultracite automatiskt att:

1. **Installerar lint-staged** som ett utvecklingsberoende
2. **Skapar eller uppdaterar** din lint-staged‑konfiguration
3. **Konfigurerar formatteraren** att köras på relevanta filtyper

Standardkonfigurationen kör `npx ultracite fix` på dessa filtyper:
- JavaScript/TypeScript‑filer (`.js`, `.jsx`, `.ts`, `.tsx`)
- JSON‑filer (`.json`, `.jsonc`)
- CSS‑filer (`.css`, `.scss`)
- Markdown‑filer (`.md`, `.mdx`)

## Stödda konfigurationsformat

Ultracite's lint-staged‑integration stödjer alla standardformat för lint-staged‑konfiguration:

### package.json

```json title="package.json"
{
  "lint-staged": {
    "*.{js,jsx,ts,tsx,json,jsonc,css,scss,md,mdx}": ["npx ultracite fix"]
  }
}
```

### .lintstagedrc.json

```json title=".lintstagedrc.json"
{
  "*.{js,jsx,ts,tsx,json,jsonc,css,scss,md,mdx}": ["npx ultracite fix"]
}
```

### .lintstagedrc.js (CommonJS)

```javascript title=".lintstagedrc.js"
module.exports = {
  "*.{js,jsx,ts,tsx,json,jsonc,css,scss,md,mdx}": ["npx ultracite fix"]
};
```

### .lintstagedrc.mjs (ES Modules)

```javascript title=".lintstagedrc.mjs"
export default {
  "*.{js,jsx,ts,tsx,json,jsonc,css,scss,md,mdx}": ["npx ultracite fix"]
};
```

### .lintstagedrc.yaml

```yaml title=".lintstagedrc.yaml"
"*.{js,jsx,ts,tsx,json,jsonc,css,scss,md,mdx}":
  - 'npx ultracite fix'
```

## Intelligent sammanslagning av konfiguration

Om du redan har en lint-staged‑konfiguration, kommer Ultracite att:

- **Upptäcka** ditt befintliga konfigurationsformat
- **Slå ihop** Ultracite‑reglerna med dina befintliga regler
- **Behålla** dina anpassade inställningar
- **Uppdatera** filen på plats

Detta innebär att du säkert kan köra `npx ultracite init` även om du redan har lint-staged uppsatt.

## Hur det fungerar

1. **Pre-commit-hook**: lint-staged körs före varje commit via Husky  
2. **Fildetektering**: Endast stagade filer som matchar mönstren behandlas  
3. **Formatteringskommando**: `npx ultracite fix` körs på varje matchande fil  
4. **Automatisk fixning**: Biome åtgärdar problem automatiskt där det är möjligt  
5. **Åter-staging**: Åtgärdade filer läggs automatiskt tillbaka i staging för commit

## Manuell konfiguration

Om du behöver anpassa din lint-staged‑inställning kan du ändra konfigurationen efter initialiseringen:

```json title="package.json"
{
  "lint-staged": {
    "*.{js,jsx,ts,tsx}": ["npx ultracite fix", "npm run test:unit"],
    "*.{json,jsonc}": ["npx ultracite fix"],
    "*.{css,scss}": ["npx ultracite fix", "npm run test:styles"],
    "*.{md,mdx}": ["npx ultracite fix"]
  }
}
```

## Kommandointegration

Lint-staged‑integrationen fungerar med Ultracite's kommando‑struktur:

- **`npx ultracite fix`**: Kör Biome med automatisk fixning (används av lint-staged)  
- **`npx ultracite check`**: Kör Biome utan automatisk fixning (för CI/manuella kontroller)

## Felsökning

### Konfiguration hittades inte
Om du ser fel om att lint-staged‑konfiguration saknas:

```bash
npx ultracite init  # Re-run initialization
```

### ESM/CommonJS‑problem
Ultracite upptäcker automatiskt din projekttyp och skapar lämpligt konfigurationsformat:

- **ESM‑projekt** (med `"type": "module"` i package.json) får `.mjs`‑konfigurationer  
- **CommonJS‑projekt** får `.cjs`‑konfigurationer  
- **Fallback**: Skapar `.lintstagedrc.json` om moduldetektering misslyckas

### Konflikter med befintlig konfiguration
Om du har komplexa befintliga konfigurationer kan du behöva slå ihop dem manuellt:

1. Säkerhetskopiera din befintliga lint-staged‑konfiguration  
2. Kör `npx ultracite init`  
3. Slå ihop eventuella anpassade regler du behöver behålla manuellt

## Bästa praxis

1. **Håll det snabbt**: Kör endast väsentliga kontroller i lint-staged  
2. **Använd specifika mönster**: Rikta endast in dig på filer som behöver behandlas  
3. **Kombinera med CI**: Använd lint-staged för snabba lokala kontroller, och fullständig lintning i CI  
4. **Testa din setup**: Gör en testcommit för att säkerställa att allt fungerar

## Relaterat

- [Husky Integration](/integration/husky) - Inställning av Git‑hookar  
- [Configuration](/configuration) - Konfigurationsalternativ för Biome  
- [Setup](/setup) - Initial projektuppsättning